home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Graphics Plus
/
Graphics Plus.iso
/
msdos
/
raytrace
/
pov
/
gen
/
jtg12
/
jtg.cpp
next >
Wrap
C/C++ Source or Header
|
1993-01-05
|
4KB
|
167 lines
#include <stdio.h> /* libraries */
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <graphics.h>
#include <mem.h>
float square(float);
float square(float num)
{
return(num * num);
}
class Torus
{
private:
float majr, minr, outr, innr;
public:
void getoutinn(float, float);
void getmajmin(float, float);
void writetofile(FILE *);
};
void Torus::getoutinn(float r1, float r2)
{
if(r1>r2)
{
outr = r1;
innr = r2;
}
else
{
outr = r2;
innr = r1;
}
minr = (outr - innr) / 2;
majr = innr + minr;
}
void Torus::getmajmin(float r1, float r2)
{
majr = r1;
minr = r2;
outr = majr + minr;
innr = majr - minr;
}
void Torus::writetofile(FILE *fileptr)
{
int counter;
fputs("/*\n", fileptr);
fputs(" *** Torus by Joe's Torus Generator ***\n", fileptr);
fputs(" by Joseph Gebis jgebis@imsasun.imsa.edu\n", fileptr);
fputs(" Torus specs:\n", fileptr);
fprintf(fileptr, " %s %8.6f %s %8.6f\n", "Major radius:", majr, "Minor radius:", minr);
fprintf(fileptr, " %s %8.6f %s %8.6f\n", "Outer radius:", outr, "Inner radius:", innr);
fputs("*/\n\n", fileptr);
fputs("#declare Torus =\nquartic { <\n", fileptr);
fprintf(fileptr, " 1.000000");
for(counter = 1; counter <= 3; counter++)
{
fprintf(fileptr, " 0.000000");
}
fprintf(fileptr, " 2.000000\n");
for(counter = 5; counter <= 6; counter++)
{
fprintf(fileptr, " 0.000000");
}
fprintf(fileptr, " 2.000000");
fprintf(fileptr, " 0.000000");
fprintf(fileptr, " %13.6f\n", (-2*(square(majr) + square(minr))));
for(counter = 10; counter <= 14; counter++)
{
fprintf(fileptr, " 0.000000");
}
fputs("\n", fileptr);
for(counter = 15; counter <= 19; counter++)
{
fprintf(fileptr, " 0.000000");
}
fputs("\n", fileptr);
fprintf(fileptr, " 1.000000");
for(counter = 21; counter <= 22; counter++)
{
fprintf(fileptr, " 0.000000");
}
fprintf(fileptr, " 2.000000");
fprintf(fileptr, " 0.000000\n");
fprintf(fileptr, " %13.6f", (2*(square(majr) - square(minr))));
for(counter = 26; counter <= 29; counter++)
{
fprintf(fileptr, " 0.000000");
}
fputs("\n", fileptr);
fprintf(fileptr, " 1.000000");
fprintf(fileptr, " 0.000000");
fprintf(fileptr, " %13.6f", (-2*(square(majr) + square(minr))));
fprintf(fileptr, " 0.000000");
fprintf(fileptr, " %13.6f\n", ((square(square(majr) - square(minr)))));
fputs("> }", fileptr);
}
Torus tor;
void main(void)
{
FILE *fileptr;
char filename[80];
char format;
float r1, r2;
printf("\nOutput torus into what file? ");
scanf("%s", filename);
fflush(stdin);
printf("Are you inputing (M)ajor/Minor radii or (O)uter/Inner radii? ");
scanf("%c", &format);
switch(format)
{
case 'm':
case 'M':
{
printf("Input Major radius: ");
scanf("%f", &r1);
printf("Input Minor radius: ");
scanf("%f", &r2);
tor.getmajmin(r1, r2);
}
break;
case 'o':
case 'O':
case 'i':
case 'I':
{
printf("Input Outer radius: ");
scanf("%f", &r1);
printf("Input Inner radius: ");
scanf("%f", &r2);
tor.getoutinn(r1, r2);
}
break;
default:
break;
}
if((fileptr = fopen(filename, "w")) == NULL)
{
printf("Died");
exit(0);
}
tor.writetofile(fileptr);
fclose(fileptr);
textcolor(YELLOW);
cprintf("Joe's Torus Generator is brought to you by Joseph Gebis");
textcolor(LIGHTGRAY);
}